/*
 * HUsuario.h - Grupo 5 - Prog. Avanzada 2011
 *
 *  Javier Dominguez - 4.901.161-6
 *  Marcelo Parada - 1.977.094-9
 *  Rodrigo Ruiz - 4.481.611-2
 *  Maximiliano Silvera - 4.106.938-6
 */

#ifndef HUSUARIO_H_
#define HUSUARIO_H_

#include <string>
#include "../util/genCollections/ColConcrete.h"
#include "../dt/UsuarioDT.h"
#include "../util/genCollections/ConcreteIterator.h"
#include "../dao/Usuario.h"
#include "../dao/Reproduccion.h"
#include "../dt/ReproduccionDT.h"

using namespace std;

class HUsuario
{
private:
	HUsuario();

	static HUsuario *instance;

	ColConcrete<Usuario*> *colUsuario;

	ColConcrete<Reproduccion*> *colReproduccion;

public:
	static HUsuario *getInstance();

	virtual bool nickDisponible(string nick);

	virtual Usuario *obtenerUsuario(string nick);

	virtual void crearUsuario(UsuarioDT *usuarioDT);

	virtual Reproduccion *obtenerReproduccion(int idTema, string nickUsuario);

	virtual ColConcrete<ReproduccionDT*> *obtenerReproduccionesTema(int idTema);

	virtual bool temaTieneReproducciones(int idTema);

	virtual void crearReproduccion(ReproduccionDT *repDT);

	virtual void aumentarReproduccion(int idTema, string nickUsuario);

	virtual ColConcrete<UsuarioDT*> *obtenerUsuarios();

	virtual ~HUsuario();
};

#endif /* HUSUARIO_H_ */
